package beans;

import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.primefaces.context.RequestContext;

import controlador.Principal;
import model.CursoPeridoGrupo;
import model.Evaluacion;
import model.Tematica;


public class Configurcionex implements Serializable {
	private static final long serialVersionUID = 1L;
	private Evaluacion e;
	private int i=1;
	public CursoPeridoGrupo c;
	public Date dateprog;
	private Date dateduracion;
	private Date horainicio;
	private Date horafin;
	private String cantpreguntas;
	private String nfacil;
	private String nmedio;
	private String ndificil;
	private String pcorrecto;
	private String pincorrecto;
	private String exam_id;
	public List<Evaluacion> listev;
	public Evaluacion evaselec;
	public String evaSelecId;
	public String vermensaje="false";
	
	
	public String getVermensaje() {
		return vermensaje;
	}
	public void setVermensaje(String vermensaje) {
		this.vermensaje = vermensaje;
	}
	public String getEvaSelecId() {
		return evaSelecId;
	}
	public void setEvaSelecId(String evaSelecId) {
		this.evaSelecId = evaSelecId;
	}
	public Evaluacion getEvaselec() {
		return evaselec;
	}
	public void setEvaselec(Evaluacion evaselec) {
		this.evaselec = evaselec;
	}
	public String getCantpreguntas() {
		return cantpreguntas;
	}
	public void setCantpreguntas(String cantpreguntas) {
		this.cantpreguntas = cantpreguntas;
	}
	public String getNfacil() {
		return nfacil;
	}
	public void setNfacil(String nfacil) {
		this.nfacil = nfacil;
	}
	public String getNmedio() {
		return nmedio;
	}
	public void setNmedio(String nmedio) {
		this.nmedio = nmedio;
	}
	public String getNdificil() {
		return ndificil;
	}
	public void setNdificil(String ndificil) {
		this.ndificil = ndificil;
	}
	public String getPcorrecto() {
		return pcorrecto;
	}
	public void setPcorrecto(String pcorrecto) {
		this.pcorrecto = pcorrecto;
	}
	public String getPincorrecto() {
		return pincorrecto;
	}
	public void setPincorrecto(String pincorrecto) {
		this.pincorrecto = pincorrecto;
	}
	
	
	public Date getDateduracion() {
		return dateduracion;
	}
	public void setDateduracion(Date dateduracion) {
		this.dateduracion = dateduracion;
	}
	
	
	public Date getDateprog() {
		return dateprog;
	}
	public void setDateprog(Date dateprog) {
		this.dateprog = dateprog;
	}
	public void insertar(){
		c=new CursoPeridoGrupo();
		c=Principal.getCpg_seleccionado();
		
		e=new Evaluacion();
		e.setCursoPeridoGrupo(c);
		e.setEvaluacionId(exam_id);
		e.setHoraInicio(horainicio);
		e.setHoraFin(horafin);
		e.setFechaProgramada(dateprog);
		e.setNivelDificl(Integer.parseInt(this.ndificil));
		e.setNivelFacil(Integer.parseInt(this.nfacil));
		e.setNivelMedio(Integer.parseInt(this.nmedio));
		e.setNumPreguntas(Integer.parseInt(this.cantpreguntas));
		e.setPuntajeCorrecto(Float.parseFloat(this.pcorrecto));
		e.setPuntajeInco(Float.parseFloat(this.pincorrecto));
		e.setFechaProgramada(dateprog);
		System.out.println(e.getNivelDificl()+ e.getFechaProgramada().toString());
		Principal.guardarCE(e);
		
	}
	public boolean validar(){
		int p1=Integer.parseInt(this.ndificil);
		int p2=Integer.parseInt(this.nfacil);
		int p3=Integer.parseInt(this.nmedio);
		int total=Integer.parseInt(this.cantpreguntas);
	 if(total!=(p1+p2+p3)){return false;}
	 return true;
	}
	 public void save1(ActionEvent actionEvent) {  
		
		 
		    exam_id="CE000"+Principal.obtenerIdConf();
		    
		    try{
		    	if(validar()){
		    		insertar();		  	    

		    		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Configuracion guardada " + exam_id+ "!")); 
	        i++;
	        }else{FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"La cantidad de preguntas total no coincide con los niveles de dificultad"," ")); }
		    }catch(Exception e){ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Datos ingresados invalidos"," ")); }
	    } 
	 public void save2(ActionEvent actionEvent){
		 
		try{
			if(validar()){
			evaselec.setFechaProgramada(this.dateprog);
			evaselec.setHoraInicio(this.horainicio);
			evaselec.setHoraFin(horafin);
			evaselec.setNivelDificl(Integer.parseInt(this.ndificil));
			evaselec.setNivelFacil(Integer.parseInt(this.nfacil));
			evaselec.setNivelMedio(Integer.parseInt(this.nmedio));
			evaselec.setNumPreguntas(Integer.parseInt(this.cantpreguntas));
			evaselec.setPuntajeCorrecto(Float.parseFloat(this.pcorrecto));
			evaselec.setPuntajeInco(Float.parseFloat(this.pincorrecto));
		    Principal.modificarCE(evaselec);}else{FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"La cantidad de preguntas total no coincide con los niveles de dificultad"," "));} 
			}catch(Exception e){
		    	FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Datos ingresados invalidos"," "));
		    }
			
		System.out.println("modifico"+ "porfin");
		 
	 }
	 public void irmodificar(ActionEvent actionEvent){
		 this.listev = Principal.devCE(Principal.getCpg_seleccionado().getCursoPeridoGrupoId()); 
		
		  try {
			    System.out.println("ggdjgfjdgfjdgfjdjgjfgdjdjgd");
				FacesContext.getCurrentInstance().getExternalContext().redirect("/Sistema_Evaluacion_Aprendizaje/faces/ModificarCE.xhtml");
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}  
		  
		 
		  
	  }
	
	public List<Evaluacion> getListev() {
		return listev;
	}
	public void setListev(List<Evaluacion> listev) {
		this.listev = listev;
	}
	
	 public void muestraresultado(){
		this.evaselec=Principal.devolverCE(this.evaSelecId);
		System.out.println(evaselec.getFechaProgramada() +""+ evaselec.getNumPreguntas());
		this.horainicio=evaselec.getHoraInicio();
		this.horafin=evaselec.getHoraFin();
		this.dateprog = evaselec.getFechaProgramada();
		this.cantpreguntas=evaselec.getNumPreguntas().toString();
		this.ndificil=evaselec.getNivelDificl()+"";
		this.nfacil=evaselec.getNivelFacil()+"";
		this.nmedio=evaselec.getNivelMedio()+"";
		this.pcorrecto=Float.toString(evaselec.getPuntajeCorrecto());
		this.pincorrecto=Float.toString(evaselec.getPuntajeInco());
		 try {
			    System.out.println("ggdjgfjdgfjdgfjdjgjfgdjdjgd");
				FacesContext.getCurrentInstance().getExternalContext().redirect("/Sistema_Evaluacion_Aprendizaje/faces/ModificarCE.xhtml");
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}  
		  
				
	 }
	public Date getHorainicio() {
		return horainicio;
	}
	public void setHorainicio(Date horainicio) {
		this.horainicio = horainicio;
	}
	public Date getHorafin() {
		return horafin;
	}
	public void setHorafin(Date horafin) {
		this.horafin = horafin;
	}
		 
}
